import axios from 'axios';

const axiosInstance = axios.create({
    baseURL: 'http://localhost:3000',
    timeout: 5000,
});

axiosInstance.interceptors.response.use(
    response => {
        return response;
    },
    async error => {
        if (error.response && error.response.status === 403) {
            try {
                const refreshTokenId = getCookie('refreshTokenId');
                const fingerprint = sessionStorage.getItem('fingerprint');
                const accessToken = sessionStorage.getItem('access_token');

                if (refreshTokenId && fingerprint && accessToken) {
                    const response = await axiosInstance.get('/token', {
                        params: {
                            refreshTokenId: refreshTokenId,
                            fingerprint: fingerprint,
                        },
                        headers: {
                            Authorization: `Bearer ${accessToken}`,
                        },
                    });
                    // Если ответ успешный, возвращаем его
                    return response;
                } else {
                    throw new Error('Отсутствуют необходимые данные для отправки запроса');
                }
            } catch (error) {
                console.error('Ошибка при отправке запроса на обновление токена:', error);
                return Promise.reject(error);
            }
        } else {
            return Promise.reject(error);
        }
    }
);

export default axiosInstance;
